package org.telegram.bot.service;

import org.springframework.transaction.annotation.Transactional;
import org.telegram.bot.domain.BotGroup;
import org.telegram.bot.domain.BotMessageTextCheck;
import org.telegram.telegrambots.meta.api.objects.chat.Chat;

import java.util.List;
import java.util.Map;

/**
 * 群组Service接口
 *
 * @author wyx
 * @date 2023-08-17
 */
public interface IBotGroupService
{
    /**
     * 查询群组
     *
     * @param id 群组主键
     * @return 群组
     */
    public BotGroup selectBotGroupById(Long id);

    /**
     * 查询群组列表
     *
     * @param botGroup 群组
     * @return 群组集合
     */
    public List<BotGroup> selectBotGroupList(BotGroup botGroup);

    /**
     * 新增群组
     *
     * @param botGroup 群组
     * @return 结果
     */
    public int insertBotGroup(BotGroup botGroup);

    /**
     * 修改群组
     *
     * @param botGroup 群组
     * @return 结果
     */
    public int updateBotGroup(BotGroup botGroup);

    /**
     * 批量删除群组
     *
     * @param ids 需要删除的群组主键集合
     * @return 结果
     */
    public int deleteBotGroupByIds(Long[] ids);

    /**
     * 删除群组信息
     *
     * @param id 群组主键
     * @return 结果
     */
    public int deleteBotGroupById(Long id);
    
    int updateChatId(Long newChatId, Long oldChatId);
    
    @Transactional(rollbackFor = Exception.class)
    boolean updateTelegramGroup(String botId, Chat chat);
    
    void clearGroup(String botId, Long id);
    
    List<BotGroup> selectSimpleList();
    
    List<BotGroup> selectSimpleList(Boolean filterChannel);
    
    Map<Long,BotGroup> selectGroupToMap(List<Long> chatIds);
    
    void messageTextCheck(BotMessageTextCheck messageTextCheck);
}
